package com.otherTest.java8;
/*
 * Copyright (c) 2018  菠菜数块链版权所有.
 */


import java.math.BigDecimal;
import java.util.function.Function;
import java.util.function.Predicate;

/**
 * @Description:
 * @author: conceit
 * 函数接口 Function<T, U> 将一个 T 类型的输入转换为 U 类型的输出
 * @Date: 2018/11/14  15:59
 */
@FunctionalInterface
public interface LambdaFuncation<T,U> {

     void show(String message);

    /**
     * isGreaterThan 引用了一个Function<T, U>
     * 或更准确地讲表示 Function<Integer, Predicate<Integer>> 的 lambda 表达式
     * 输入是一个 Integer，输出是一个 Predicate<Integer>。
     * 在 lambda 表达式的主体中（外部 {} 内），我们创建了另一个引用 isGreaterThanPivot
     * 该引用是一个 Predicate 而不是 Function。最后，我们返回该引用。
     * isGreaterThan 是一个 lambda 表达式的引用，该表达式在调用时返回另一个 lambda 表达式 — 换言之，这里隐藏着一种 lambda 表达式级联关系。
     *
     */
      Function<Integer,Predicate<Integer>> isGreaterThan=(Integer pivot)->{
        Predicate<Integer> isGreaterThanPivot=(Integer candidate)->{
            return candidate>pivot;
        };
        return isGreaterThanPivot;
    };

//    Function<Integer, Predicate<Integer>> isGreaterThan = pivot -> {
//        return candidate -> {
//            return candidate > pivot;
//        };
//    };

//    Function<Integer, Predicate<Integer>> isGreaterThan = pivot -> {
//        return candidate -> candidate > pivot;
//    };

//    Function<Integer, Predicate<Integer>> isGreaterThan =
//            pivot -> candidate -> candidate > pivot;




}
